using System;
using System.Configuration;
using System.Data;
using System.Text;
using System.Web.UI.WebControls;
using Anthem;
using App_Code;
using MinCultura.Sinic.Basicas;
using Common;

using MinCultura.Sipa.EntidadesArtes; 
using MinCultura.Sipa.DataAccess.EntidadesArtes;
using MinCultura.Sipa.DataAccess.AgentesArtes;
using MinCultura.Sipa.AgentesArtes;
using UsrControls;

using CompareValidator = Anthem.CompareValidator;
using CustomValidator = Anthem.CustomValidator;
using Label = Anthem.Label;
using RadioButtonList = Anthem.RadioButtonList;
using RegularExpressionValidator = Anthem.RegularExpressionValidator;
using RequiredFieldValidator = Anthem.RequiredFieldValidator;
using TextBox = Anthem.TextBox;

namespace web.Controls
{
	/// <summary>
	/// Summary description for AgentesBasicos.
	/// </summary>
	public class InfraestructuraEscenario : SinicUserControl
	{
		protected UsrControls.TextBoxBase txtDimenciones;
		protected UsrControls.TextBoxBase txtMetrosAncho;
		protected UsrControls.TextBoxBase txtAlturaBoca;
		protected UsrControls.TextBoxBase txtAnchoBoca;
		protected Anthem.RadioButtonList rblSiNoFosoOrquesta;
		protected Anthem.RadioButtonList rblSiNoEmbarqueExterior;
		protected UsrControls.DropDownBase ddlTiposCoberturaFoso;
		protected Anthem.Label lblAreaFoso;
		protected Anthem.RequiredFieldValidator reqMetrosAncho;
		protected Anthem.RequiredFieldValidator reqMetrosFondo;
		protected Anthem.RequiredFieldValidator reqAlturaBoca;
		protected Anthem.RequiredFieldValidator reqAnchoBoca;
		protected UsrControls.TextBoxBase txtMetrosTrasescena;
		protected Anthem.RequiredFieldValidator reqMetrosTrasescena;
		protected UsrControls.TextBoxBase txtAreaFoso;
		protected UsrControls.TextBoxBase txtMetrosFondo;
		protected Anthem.CheckBoxList cblHombros;
		protected Anthem.Label lblCoberturaFoso;

		#region - Eventos

		private void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack)
			{
				Manager.Register(this);
				reqMetrosAncho.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtMetrosAncho.ToolTip);
				reqMetrosFondo.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtMetrosFondo.ToolTip);
				reqAlturaBoca.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtAlturaBoca.ToolTip);
				reqAnchoBoca.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtAnchoBoca.ToolTip);
				reqMetrosTrasescena.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtMetrosTrasescena.ToolTip);

				if (this.Identificador==0)
				{
					CargarControles();
				}

				StringBuilder strFosoOrquesta = new StringBuilder();
				strFosoOrquesta.Append(rblSiNoFosoOrquesta.ClientID + "_0,");
				strFosoOrquesta.Append(lblAreaFoso.ClientID + ",");
				strFosoOrquesta.Append(txtAreaFoso.ClientID + ",");
				strFosoOrquesta.Append(lblCoberturaFoso.ClientID + ",");
				strFosoOrquesta.Append(ddlTiposCoberturaFoso.ClientID);
				rblSiNoFosoOrquesta.Attributes["OnClick"] = "return habilitarCamposSINO(" + strFosoOrquesta.ToString() + ")";

				txtMetrosAncho.OnChangeFunction = "CalcularDimencionesEscena()";
				txtMetrosFondo.OnChangeFunction = "CalcularDimencionesEscena()";

			}
		}

		#endregion 

		#region - Metodos 		

		public DataSet ObtenerDatos()
		{
			DataSet dsEscenario = new DataSet();

			//Escenario
			InfraestructuraEntidadesEscenarioData dtEscenario = new InfraestructuraEntidadesEscenarioData();
			DataRow fila = dtEscenario.NewRow();

			fila[InfraestructuraEntidadesEscenarioData.INF_ID_FIELD] = this.Identificador;
			fila[InfraestructuraEntidadesEscenarioData.INF_METROS_ANCHO_FIELD] = txtMetrosAncho.Text;
			fila[InfraestructuraEntidadesEscenarioData.INF_METROS_FONDO_FIELD] = txtMetrosFondo.Text;
			fila[InfraestructuraEntidadesEscenarioData.INF_ALTURA_BOCA_FIELD] = txtAlturaBoca.Text;
			fila[InfraestructuraEntidadesEscenarioData.INF_ANCHO_BOCA_FIELD] = txtAnchoBoca.Text;
			fila[InfraestructuraEntidadesEscenarioData.INF_METROS_TRASESCENA_FIELD] = txtMetrosTrasescena.Text;
			fila[InfraestructuraEntidadesEscenarioData.INF_TIENE_FOSO_ORQUESTA_FIELD] = rblSiNoFosoOrquesta.SelectedValue;
			if (rblSiNoFosoOrquesta.SelectedValue == Utilidad.SI)
			{
				if (txtAreaFoso.Text.Trim().Length > 0)
					fila[InfraestructuraEntidadesEscenarioData.INF_AREA_FOSO_FIELD] = txtAreaFoso.Text;					
				fila[InfraestructuraEntidadesEscenarioData.TCF_ID_FIELD] = ddlTiposCoberturaFoso.SelectedValue ;
			}
			fila[InfraestructuraEntidadesEscenarioData.INF_POSIBILIDAD_EMBARQUE_FIELD] = rblSiNoEmbarqueExterior.SelectedValue;

			dtEscenario.addInfraestructuraEntidadesEscenario(fila);

			dsEscenario.Tables.Add(dtEscenario);

			//Hombros
			InfraestructuraHombrosData dtHombros = new InfraestructuraHombrosData();
			foreach (ListItem liHombro in cblHombros.Items)
			{								
				if (liHombro.Selected)
				{
					DataRow drHombro = dtHombros.NewRow();
					drHombro[InfraestructuraHombrosData.INF_ID_FIELD] = this.Identificador;
					drHombro[InfraestructuraHombrosData.HOM_ID_FIELD] = liHombro.Value;
					dtHombros.addInfraestructuraHombros(drHombro);
				}
			}
			dsEscenario.Tables.Add(dtHombros);

			return dsEscenario;
		}

		public void CreaEntorno(DataSet dsEscenario)
		{
			if (!IsPostBack)
			{
				CargarControles();

				//Escenario
				InfraestructuraEntidadesEscenarioData dtEscenario = (InfraestructuraEntidadesEscenarioData)dsEscenario.Tables[InfraestructuraEntidadesEscenarioData.ART_INFRAESTRUCTURA_ENTIDADES_ESCENARIO_TABLE];
				DataRow fila = dtEscenario.Rows[0];

				this.Identificador = Convert.ToDecimal(fila[InfraestructuraEntidadesEscenarioData.INF_ID_FIELD]);
				txtMetrosAncho.Text = fila[InfraestructuraEntidadesEscenarioData.INF_METROS_ANCHO_FIELD].ToString();
				txtMetrosFondo.Text = fila[InfraestructuraEntidadesEscenarioData.INF_METROS_FONDO_FIELD].ToString();
				txtAlturaBoca.Text = fila[InfraestructuraEntidadesEscenarioData.INF_ALTURA_BOCA_FIELD].ToString();
				txtAnchoBoca.Text = fila[InfraestructuraEntidadesEscenarioData.INF_ANCHO_BOCA_FIELD].ToString();
				txtMetrosTrasescena.Text = fila[InfraestructuraEntidadesEscenarioData.INF_METROS_TRASESCENA_FIELD].ToString();

				if (fila[InfraestructuraEntidadesEscenarioData.INF_TIENE_FOSO_ORQUESTA_FIELD] != DBNull.Value && 
					fila[InfraestructuraEntidadesEscenarioData.INF_TIENE_FOSO_ORQUESTA_FIELD].ToString() != string.Empty)
				{
					rblSiNoFosoOrquesta.SelectedValue = fila[InfraestructuraEntidadesEscenarioData.INF_TIENE_FOSO_ORQUESTA_FIELD].ToString();
					if (rblSiNoFosoOrquesta.SelectedValue == Utilidad.SI)
					{
						txtAreaFoso.Text = fila[InfraestructuraEntidadesEscenarioData.INF_AREA_FOSO_FIELD].ToString();					
						lblAreaFoso.Enabled = true;
						txtAreaFoso.Enabled = true;
						ddlTiposCoberturaFoso.SelectedValue = fila[InfraestructuraEntidadesEscenarioData.TCF_ID_FIELD].ToString();
						lblCoberturaFoso.Enabled = true;
						ddlTiposCoberturaFoso.Enabled = true;
					}
				}
			
				if (fila[InfraestructuraEntidadesEscenarioData.INF_POSIBILIDAD_EMBARQUE_FIELD] != DBNull.Value && 
					fila[InfraestructuraEntidadesEscenarioData.INF_POSIBILIDAD_EMBARQUE_FIELD].ToString() != string.Empty)
				{
					rblSiNoEmbarqueExterior.SelectedValue = fila[InfraestructuraEntidadesEscenarioData.INF_POSIBILIDAD_EMBARQUE_FIELD].ToString();
				}

				txtDimenciones.Text = Convert.ToString(Convert.ToDecimal(txtMetrosAncho.Text)*Convert.ToDecimal(txtMetrosFondo.Text));

				//Hombros
				InfraestructuraHombrosData dtHombros = (InfraestructuraHombrosData)dsEscenario.Tables[InfraestructuraHombrosData.ART_INFRAESTRUCTURA_HOMBROS_TABLE];			
				foreach (DataRow drHombro in dtHombros.Rows)
				{
					ListItem liHombro = cblHombros.Items.FindByValue(drHombro[InfraestructuraHombrosData.HOM_ID_FIELD].ToString());
					if (liHombro!=null)
					{
						liHombro.Selected = true;
					}
				}
			}
		}

		private void CargarControles()
		{
			cblHombros.Items.Clear();
            Hombros objBRHombros = new Hombros(ConfigurationManager.AppSettings["Conn"]);
			HombrosData objDataHombros = new HombrosData();

			objDataHombros = objBRHombros.BuscarHombros();
			if (objDataHombros != null)
			{				
				cblHombros.DataSource = objDataHombros.Tables[0].DefaultView;
				cblHombros.DataTextField = HombrosData.HOM_NOMBRE_FIELD;
				cblHombros.DataValueField = HombrosData.HOM_ID_FIELD;
				cblHombros.DataBind();
			}

			ddlTiposCoberturaFoso.Items.Clear();
            TiposCoberturaFoso objBRTiposCoberturaFoso = new TiposCoberturaFoso(ConfigurationManager.AppSettings["Conn"]);
			TiposCoberturaFosoData objDataTiposCoberturaFoso = new TiposCoberturaFosoData();

			objDataTiposCoberturaFoso = objBRTiposCoberturaFoso.BuscarTiposCoberturaFoso();
			if (objDataTiposCoberturaFoso != null)
			{				
				ddlTiposCoberturaFoso.DataSource = objDataTiposCoberturaFoso.Tables[0].DefaultView;
				ddlTiposCoberturaFoso.DataTextField = TiposCoberturaFosoData.TCF_NOMBRE_FIELD;
				ddlTiposCoberturaFoso.DataValueField = TiposCoberturaFosoData.TCF_ID_FIELD;
				ddlTiposCoberturaFoso.DataBind();
			}			
		}
		#endregion 

		#region - Propiedades

		public decimal Identificador
		{
			get
			{
				if (ViewState["Identificador"] != null)
					return ((decimal) ViewState["Identificador"]);
				else
					return (0);
			}
			set { ViewState["Identificador"] = decimal.Parse(value.ToString()); }
		}

		public DataSet EscenarioData
		{
			get
			{
				return ObtenerDatos();
			}
			set
			{
				CreaEntorno(value);
			}
		}

		#endregion 

		#region Web Form Designer generated code

		protected override void OnInit(EventArgs e)
		{
			InitializeComponent();
			base.OnInit(e);
		}

		private void InitializeComponent()
		{
			this.Load += new System.EventHandler(this.Page_Load);

		}

		#endregion

	}
}